nvim 打造一个适合自己的开发环境 |
您所在的位置:网站首页 › neovim golang › nvim 打造一个适合自己的开发环境 |
编辑器以前一直使用vscode + vim 插件,但是由于疫情在家工作任务不太多,就自己使用nvim搭建了一套适合自己的开发环境。 这里分享一下自己主要使用的插件,默认配置以及快捷点设置。 github以下以mac为例,windows 有些插件可能需要去对应的github 查看安装教程。安装之后的效果是: 前往github neovim 下载对应版本和系统的文件。这里使用在线编译进行安装下载版本为: 0.7 我专门写了一个shell脚本你可以: // 创建目录 1. mkdir shell 2. wget https://github.com/zlongCoding/shell/blob/main/nvim.sh /** | bashPath='修改成自己的主路径' | | nvimPath="${bashPath}/Desktop/nvim" //nvim下载地址 | nvimConfig="${bashPath}/.config/nvim" //nvim 配置地址 | zshrcPath="${bashPath}/.zshrc" //zshrc地址 | nvimGitPath='https://github.com/neovim/neovim' **/ 3. ./nvim.sh功能主要是: 前端开发,go开发、其他的可以自行配置 如果按照我自己的配置其实这样子已经足够了,但是下面我会简单说一下使用的插件。 $ cd ~/.config/nvim $ touch init.lua && mkdir lua ├── lua │ ├── autocmds.lua │ ├── basic.lua │ ├── colorscheme.lua │ ├── keybindings.lua │ ├── plugins.lua │ ├── shell.lua │ ├── lsp │ ├── plugin-config │ ├── shell │ ├── spector │ └── utils └── init.lua上面是我们的主文件目录 basic.lua修改vim基本配置 -- utf8 vim.g.encoding = "UTF-8" vim.o.fileencoding = "utf-8" -- jkhl 移动时光标周围保留8行 vim.o.scrolloff = 8 vim.o.sidescrolloff = 8 -- 使用相对行号 vim.wo.number = true vim.wo.relativenumber = true -- 高亮所在行 vim.wo.cursorline = true -- 显示左侧图标指示列 vim.wo.signcolumn = "yes" -- 右侧参考线,超过表示代码太长了,考虑换行 vim.wo.colorcolumn = "80" -- 缩进2个空格等于一个Tab vim.o.tabstop = 2 vim.bo.tabstop = 2 vim.o.softtabstop = 2 vim.o.shiftround = true -- >> if paccker_bootstrap then packer.sync() end end, config = { -- 最大并发数 max_jobs = 16, -- 自定义源 git = { default_url_format = "https://mirror.ghproxy.com/https://github.com/%s" } -- display = { -- 使用浮动窗口显示 -- open_fn = function() -- return require("packer.util").float({ border = "single" }) -- end, -- }, } } )下面所有的插件在plugins.lua文件中安装: wbthomason/packer.nvimnvim 包管理器 use("wbthomason/packer.nvim")使用:PackerInstall 可以下载插件 在 init.lua引入 -- Packer插件管理 require("plugins") ful1e5/onedark.nvim主题色 use("ful1e5/onedark.nvim")在colorscheme.lua文件中写入 vim.o.background = "dark" local colorscheme = "onedark" local status_ok, _ = pcall(vim.cmd, "colorscheme " .. colorscheme) if not status_ok then vim.notify("colorscheme: " .. colorscheme .. " 没有找到!") return end在 init.lua引入 -- 主题设置 require("colorscheme")到这里我们基本可以简单操作一下vim。在控制台输入nvim: $ nvim //进入vim 编辑界面运行 :PackerInstall当从github上下载完包只有我们vim 主题色就会发生变化。 其他插件的安装使用都是这个操作。 kyazdani42/nvim-tree.lua文件目录管理 use( { "kyazdani42/nvim-tree.lua", requires = "kyazdani42/nvim-web-devicons" } )在plugin-config目录,创建nvim-tree.lua文件添加如下配置 -- https://github.com/kyazdani42/nvim-tree.lua -- local nvim_tree = require'nvim-tree' local status, nvim_tree = pcall(require, "nvim-tree") if not status then vim.notify("没有找到 nvim-tree") return end -- 列表操作快捷键 local list_keys = require("keybindings").nvimTreeList local g = vim.g g.nvim_tree_add_trailing = 0 -- append a trailing slash to folder names g.nvim_tree_git_hl = 0 g.nvim_tree_highlight_opened_files = 0 -- --这里是升级之后的配置 --[[ g.nvim_tree_indent_markers = 1 ]] g.nvim_tree_root_folder_modifier = table.concat {":t:gs?$?/..", string.rep(" ", 1000), "?:gs?^??"} g.nvim_tree_show_icons = { folders = 1, files = 1, git = 1 } nvim_tree.setup({ -- 隐藏 .文件 和 node_modules 文件夹 filters = { dotfiles = false, custom = {".git"} }, disable_netrw = true, hijack_netrw = true, ignore_ft_on_setup = {"dashboard"}, -- auto_close = false, open_on_tab = false, hijack_cursor = true, hijack_unnamed_buffer_when_opening = false, update_cwd = true, update_focused_file = { enable = true, update_cwd = false }, renderer = { indent_markers = { enable = true } }, view = { -- 宽度 width = 36, -- 也可以 'right' side = "left", -- 隐藏根目录 hide_root_folder = true, -- 自定义列表中快捷键 mappings = { custom_only = true --[[ list = list_keys, ]] }, -- 不显示行数 number = false, relativenumber = false, -- 显示图标 signcolumn = "yes" }, git = { enable = false, ignore = false }, actions = { open_file = { resize_window = true } } })在 init.lua引入 -- 插件配置 require("plugin-config.nvim-tree") goolord/alpha-nvim欢迎页同理 在plugin-config目录 创建dashboard.lua文件 vim.g.dashboard_default_executive = "telescope" vim.g.dashboard_custom_section = { } vim.g.dashboard_custom_header = { }在 init.lua引入 require("plugin-config.dashboard")由于有些字体文件这里无法显示,所有有兴趣的可以查看github 源代码 nvim-web-deviconsnvim-icons akinsho/bufferline.nvimtab 文件多文件管理 nvim-lualine/lualine.nvim状态栏管理 nvim-telescope/telescope.nvim文件查询,文字查询,文件夹查询等等 LinArcX/telescope-env.nvim查看系统环境变量 nvim-telescope/telescope-ui-select.nvimtelescope选择ui folke/which-key.nvim查看快捷键 nvim-treesitter/nvim-treesitter主题代码颜色增强 ahmedkhalf/project.nvim项目管理 :Telescope projects p00f/nvim-ts-rainbow彩虹括号 lukas-reineke/indent-blankline.nvim代码缩进显示标识 akinsho/toggleterm.nvim切换多个终端 ur4ltz/surround.nvimvim surround numToStr/Comment.nvim注释插件 JoosepAlviste/nvim-ts-context-commentstringtsx 注释增强 windwp/nvim-autopairs自动生成关闭标签 windwp/nvim-ts-autotagtsx 自动生成关闭标签 lewis6991/gitsigns.nvimgit 管理 puremourning/vimspector调试 SmiteshP/nvim-gps在bufferline中显示当前的代码名称 rmagatti/goto-preview弹框定位到具体内容 folke/trouble.nvim错误美化 TroubleTroubleToggleTroubleToggle workspace_diagnosticsTroubleToggle document_diagnosticsTroubleToggle quickfixTroubleToggle loclistTroubleToggle lsp_references sbdchd/neoformat格式化 folke/todo-comments.nvimTODO list mg979/vim-visual-multi多光标操作 michaelb/sniprun运行代码片段 windwp/nvim-spectre替换文本 kristijanhusak/vim-carbon-now-sh截图 RRethy/vim-illuminate高亮相同单词 unblevable/quick-scope高亮目标行首字符 liuchengxu/vista.vim大纲预览 m-demare/hlargs.nvim函数参数高亮 phaazon/hop.nvim快速定位单词和某一行 romgrk/nvim-treesitter-context当前方法吸顶 williamboman/nvim-lsp-installerlsp 语言下载 neovim/nvim-lspconfiglsp 语法支持提示 hrsh7th/nvim-cmp补全引擎 hrsh7th/cmp-vsniphrsh7th/cmp-nvim-lsphrsh7th/cmp-bufferhrsh7th/cmp-pathhrsh7th/cmp-cmdlinehrsh7th/cmp-nvim-lsp-signature-help都是同一个开发的对lsp的增强,都安装一下 f3fora/cmp-spell拼写建议 rafamadriz/friendly-snippets常用的代码片段 onsails/lspkind.nvimlsp ui美化 tami5/lspsaga.nvimlsp ui美化 jose-elias-alvarez/nvim-lsp-ts-utilsts 增强 folke/lua-dev.nvimlua 增强 b0o/schemastore.nvimjson增强 b0o/schemastore.nvimjson增强 fatih/vim-gogo 语法增强 j-hui/fidget.nvimlsp 加载进度ui 其实在nvim插件配置中,都是一样的,只要我们掌握的一种,其他自己需要的插件就可以自己安装了。 这里有个重点说一下。 shell在我自己的配置中,默认打开go 项目会自动生成.vimspector.json文件。创建文件vimspector配置文件 $ mkdir -p lua/spector/vimspector/templates $ touch go.vimspector.json在go.vimspector.json文件写入:适合go 的.vimspector.json设置 { "configurations": { "launch": { "adapter": "vscode-go", "configuration": { "request": "launch", "program": "${file}" } } } }创建文件lua/shell/vimspector.sh: #!/bin/sh # workdir=$(cd $(dirname $0); pwd) # targetFile= "$workdir/go.mod" targetFileType="" if [ -f "./.vimspector.json" ]; then exit 1 fi if [ -f "./go.mod" ]; then targetFileType="go" elif [ -f "./package.json" ]; then targetFileType="js" fi if [ $targetFileType ]; then ## 这里地址改成自己地址 cp /Users/longzhang/.config/nvim/lua/spector/vimspector/templates/${targetFileType}.vimspector.json .vimspector.json fi在lua/shell.lua 文件写入: cmd =("sh /Users/longzhang/.config/nvim/lua/shell/vimspector.sh ") os.execute(cmd)在init.sh 引入: -- 执行shell 脚本 require("shell")当做完这些之后,当我们每次通过vim 进入项目,就是执行shell 脚本,来检查是否符合判断,如果符合对应的判断条件,就会在项目根目录生成.vimspector.json文件 github vim 本作品采用《CC 协议》,转载必须注明作者和本文链接 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |